#pragma once


#include "MyGLUtils.h"
#include <functional>

class Model;
class Shader;

class GameObject {
public:

	GameObject(Model* model);
	GameObject(const GameObject& other) = delete;
	GameObject& operator=(const GameObject& other) = delete;
	virtual ~GameObject() = default;

public:

	 void Update(function<void(GameObject& obj)> updateFunc);
	 void Draw(function<void(GameObject& obj)> drawFunc);

public:
	Vector3f position;
	Quaternionf rotation;
	Vector3f scale;
	Matrix4x4f modelMat;
	Model* ptrModel = nullptr;
};



